import Taro from '@tarojs/taro'
import {transmitUrlToVisit} from "@/network/proxy";

const PAGE_WEBVIEW = '/pages/webview/index'

/**
 * // NOTE 后端返回的 url 可能是网页链接，需要在 webview 中打开
 * 也可能是小程序自身的链接，只能用 navigate/redirect 之类的打开
 * 就需要有个地方统一判断处理
 */

/**
 * url规则（从校园同后台管理配置得来）：lgFixed+使用的学校|使用的学校|使用的学校|使用的学校+lgFixed+h5地址
 */
export function parseCustomH5UrlFromRule(url){// lgFixedS-XHWLXX|S-3333lgFixedhttp://60.12.87.186:9117/wap/catering-h5/order-food
   if(!url)return ''
   const schoolAndH5Arr = url.split('lgFixed')// ['', ''S-3333|S-888', 'http://60.12.87.186:9117/wap/catering-h5/order-food']
   return schoolAndH5Arr.length > 1 ? schoolAndH5Arr[schoolAndH5Arr.length-1] : ''
}

export function jumpToH5(options: { url:string, title:string, payload:object, method?:string, copy?:boolean|string, onlyCopy?:boolean }, proxy = true) {//含代理处理
   let { url, title = '', payload = {}, method = 'navigateTo', copy=false, onlyCopy=false } = options
   const h5Url = urlStringify(url, payload)
   const jumpUrl = urlStringify(PAGE_WEBVIEW, { url:proxy ? encodeURIComponent(transmitUrlToVisit(h5Url)) : encodeURIComponent(h5Url), title }, false)
   //跳转时复制链接
   if (copy){
      wx.setClipboardData({
         data: h5Url,
         success () {
            wx.hideToast()
            if(copy !== true){
               wx.showToast({ title: copy, icon:'none' })
            }else{
               wx.showToast({ title:'已复制链接，请使用浏览器打开', icon:'none' })
            }

            if(!onlyCopy){
               setTimeout(()=>{
                  Taro[method]({
                     url:jumpUrl
                  })
               }, 1500)
            }
         }
      })
   }else{
      Taro[method]({
         url:jumpUrl
      })
   }
}

export function urlStringify(url, payload, encode = true) {
   const arr = Object.keys(payload).map(key =>
      `${key}=${encode ? encodeURIComponent(payload[key]) : payload[key]}`
   )

   // NOTE 注意支付宝小程序跳转链接如果没有参数，就不要带上 ?，否则可能无法跳转
   return arr.length ? `${url}?${arr.join('&')}` : url
}
